package edu.chen.exception;

/**
 * 异常的集中式处理,相对简单,而且可以随意指定异常页面
 * 异常测试类
 * 1.因为使用该方法集中处理异常时,如果原方法是需要ajax的调用方法,在该方法中不能直接跳转,
 *      (ajax调用的方法一般用@ResponseBody修饰,若一般用<a>标签调用的方法,即使用该注解标注也能完成跳转)
*      所以ajax的调用的方法在controller层捕获异常并返回结果
 *
 *
 *
 *
 * HandlerExceptionResolver是所有自定义全局异常都要继承的接口
 * SimpleMappingExceptionResolver  --->(继承)     AbstractHandlerExceptionResolver   --->   HandlerExceptionResolver
 */

import edu.chen.exception.login.NoUserException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView modelAndView = new ModelAndView();
        if(ex instanceof NoUserException) {
            modelAndView.setViewName("error");
            modelAndView.addObject("error","没有该用户");
        }
        return modelAndView;
    }
}
